#include "serialparser.h"
#include <QStringList>
#include <QDebug>

serialparser::serialparser(QObject *parent) : QObject(parent)
{
}

void serialparser::processData(const QString &rawData)
{
    // 检查数据类型并解析（这里以 GPGGA 数据为例）
    if (rawData.startsWith("$GPGGA")) {
        QStringList fields = rawData.split(',');

        if (fields.size() < 15) {
            emit parsedDataReady("Incomplete GPGGA data");
            return;
        }

        // 解析字段
        QString time = fields[1];
        QString latitude = fields[2];
        QString latDir = fields[3];
        QString longitude = fields[4];
        QString longDir = fields[5];
        QString fixQuality = fields[6];
        QString satellites = fields[7];
        QString hdop = fields[8];
        QString altitude = fields[9];
        QString altitudeUnit = fields[10];
        QString geoidHeight = fields[11];
        QString geoidUnit = fields[12];

        // 构建解析后的数据
        QString parsedData = QString(
            "时间: %1\n"
            "纬度: %2 %3\n"
            "经度: %4 %5\n"
            "定位质量: %6\n"
            "卫星数量: %7\n"
            "水平精度 (HDOP): %8\n"
            "海拔: %9 %10\n"
            "大地高: %11 %12")
            .arg(time)
            .arg(latitude)
            .arg(latDir)
            .arg(longitude)
            .arg(longDir)
            .arg(fixQuality)
            .arg(satellites)
            .arg(hdop)
            .arg(altitude)
            .arg(altitudeUnit)
            .arg(geoidHeight)
            .arg(geoidUnit);

        // 发射解析完成信号
        emit parsedDataReady(parsedData);
    } else {
        emit parsedDataReady(" ");
    }
}

